const publicPath = process.env.VUE_APP_PUBLIC_PATH || '/'

// 设置不参与构建的库
const externals = {}

const outputDir = 'dist'

process.env.VUE_APP_VERSION = new Date().toISOString()

module.exports = {
  publicPath, //配置路径
  outputDir, //输出文件目录
  lintOnSave: false, //取消 eslint 验证 eslint-loader是否在保存的时候检查
  productionSourceMap: false, //设置上线后是否加载SourceMap文件
  devServer: {
    // test cos
    // before,
    port: 8088,
    hot: false,
    publicPath, // 和 publicPath 保持一致
    disableHostCheck: true, // 关闭 host check，方便使用 ngrok 之类的内网转发工具
    proxy: {
      //配置跨域代理
      '/urcap': {
        target: 'http://81.69.198.195:81',
        // target: 'http://192.168.0.102:81',
        changeOrigin: true,
        // pathRewrite: {
        //   '^/api': ''
        // }
      },
    }
  },
  css: {
    loaderOptions: {
      // 设置 scss 公用变量文件
      sass: {
        prependData: "@import '~@/assets/style/public.scss';"
      }
    }
  },

  configureWebpack: config => {
    const configNew = {
      externals: {},
      plugins: []
    }
    if (process.env.NODE_ENV === 'production') {
      configNew.externals = externals
    }
    return configNew
  },
  chainWebpack: config => {

    config.module
      .rule('vue')
      .test(/\.vue$/)
      .use('htmlpx-to-viewport-loader')
      .loader(require.resolve('./htmlpx-to-viewport.js'))
      .end()

    config.plugins.delete('prefetch').delete('preload')

    config
      // 开发环境 sourcemap 不包含列信息
      .when(process.env.NODE_ENV === 'development', config =>
        config.devtool('source-map')
      )
    if (process.env.NODE_ENV !== 'development') {
      // 代码压缩
      config.optimization.minimizer('terser').tap(args => {
        // 生产环境推荐关闭 sourcemap 防止源码泄漏
        // 服务端通过前端发送的行列，根据 sourcemap 转为源文件位置
        args[0].sourceMap = true
        args[0].terserOptions.warnings = false
        args[0].terserOptions.compress.drop_console = true
        args[0].terserOptions.compress.drop_debugger = true
        return args
      })
    }
  }
}
